/* 8911106 302933981 Ofri Keidar */

/******************************************************************************
* Student Name: Ofri Keidar
* Exercise Name: Ex6
* File Description: Class Item's interface. An Item object has a number, name
* 					and a printing operator
******************************************************************************/


#ifndef ITEM_H_
#define ITEM_H_
#include <iostream>
using namespace std;
#include <string.h>

class Item {
private:
	short m_number; // item's number
	string m_name; // item's name

public:
	/***************************************************************************************
	* function name: Item(const short number, const string name)
	* The Input: New item's number and name
	* The output: None
	* The Function operation: Creates a new item with given number and name
	***************************************************************************************/
	Item(const short number, const string name);

	/***************************************************************************************
	* function name: Inventory(const Inventory& inventoryToCopy)
	* The Input: Item object to be copied
	* The output: None
	* The Function operation: Creates a new item with number and name identical to given item's
	***************************************************************************************/
	Item(const Item& itemToCopy);

	/***************************************************************************************
	* function name: ~Item()
	* The Input: None
	* The output: None
	* The Function operation: Destructs Item object. Empty implementation since Item's
	* 						  members are not dynamically allocated
	***************************************************************************************/
	~Item() { }

	/***************************************************************************************
	 * function name: friend ostream& operator << (ostream &os, const Item& itemToPrint)
	 * The Input: Reference to item to be printed
	 * The output: ostream reference
	 * The Function operation: Prints item's details
	 ***************************************************************************************/
	friend ostream& operator << (ostream &os, const Item& itemToPrint);
};


#endif
